One or more aspects relate, in general, to processing within a computing environment, and in particular, to facilitating such processing.
Computer programs often call functions to provide particular operations, such as print, various mathematical operations, etc. The program calling the function is referred to as a caller, and the called function is referred to as the callee. Many of these functions are extremely short, either due to their net static length (i.e., the functions do not include many instructions), or their short dynamic length (e.g., due to an early-out condition).
Short functions, like any other functions, store callee-saved registers that they modify on a stack as part of the function's prolog and restore them as part of the epilog. The stack, also referred to as a call stack, is used by a computer program to store information about active functions of the computer program. Similarly, callers to such functions save caller-saved registers on the stack as part of the function's call sequence, and restore them upon the return, if the values live across the function call. Saving these registers is a significant expense of calling a function.
Further, for short functions, the expense associated with saving and then restoring these registers is even higher, since the restore can only occur after the save has completed, and that is not guaranteed to occur. Under these circumstances, additional penalties, such as load-hit-store and forwarding penalties may be incurred.